Stop using gtk_widget_destroyed
authorMatthias Clasen <mclasen@redhat.com>
Sat, 9 May 2020 16:03:11 +0000 (12:03 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Mon, 11 May 2020 16:19:37 +0000 (12:19 -0400)
Replace all internal use of gtk_widget_destroyed
by g_object_add_weak_pointer.

69 files changed:
demos/gtk-demo/assistant.c
demos/gtk-demo/builder.c
demos/gtk-demo/clipboard.c
demos/gtk-demo/combobox.c
demos/gtk-demo/constraints.c
demos/gtk-demo/constraints2.c
demos/gtk-demo/constraints3.c
demos/gtk-demo/css_accordion.c
demos/gtk-demo/css_basics.c
demos/gtk-demo/css_blendmodes.c
demos/gtk-demo/css_multiplebgs.c
demos/gtk-demo/css_pixbufs.c
demos/gtk-demo/css_shadows.c
demos/gtk-demo/dialog.c
demos/gtk-demo/dnd.c
demos/gtk-demo/editable_cells.c
demos/gtk-demo/entry_completion.c
demos/gtk-demo/entry_undo.c
demos/gtk-demo/filtermodel.c
demos/gtk-demo/fishbowl.c
demos/gtk-demo/flowbox.c
demos/gtk-demo/font_features.c
demos/gtk-demo/gears.c
demos/gtk-demo/gestures.c
demos/gtk-demo/headerbar.c
demos/gtk-demo/hypertext.c
demos/gtk-demo/iconscroll.c
demos/gtk-demo/iconview_edit.c
demos/gtk-demo/images.c
demos/gtk-demo/infobar.c
demos/gtk-demo/links.c
demos/gtk-demo/list_store.c
demos/gtk-demo/listbox.c
demos/gtk-demo/markup.c
demos/gtk-demo/modelbutton.c
demos/gtk-demo/overlay.c
demos/gtk-demo/overlay2.c
demos/gtk-demo/pagesetup.c
demos/gtk-demo/paint.c
demos/gtk-demo/panes.c
demos/gtk-demo/password_entry.c
demos/gtk-demo/peg_solitaire.c
demos/gtk-demo/pickers.c
demos/gtk-demo/pixbufs.c
demos/gtk-demo/rotated_text.c
demos/gtk-demo/scale.c
demos/gtk-demo/search_entry2.c
demos/gtk-demo/shortcut_triggers.c
demos/gtk-demo/shortcuts.c
demos/gtk-demo/sidebar.c
demos/gtk-demo/sizegroup.c
demos/gtk-demo/sliding_puzzle.c
demos/gtk-demo/spinbutton.c
demos/gtk-demo/spinner.c
demos/gtk-demo/stack.c
demos/gtk-demo/tabs.c
demos/gtk-demo/tagged_entry.c
demos/gtk-demo/textmask.c
demos/gtk-demo/textscroll.c
demos/gtk-demo/textundo.c
demos/gtk-demo/textview.c
demos/gtk-demo/themes.c
demos/gtk-demo/theming_style_classes.c
demos/gtk-demo/transparent.c
demos/gtk-demo/tree_store.c
demos/gtk-demo/video_player.c
gtk/gtkmountoperation.c
gtk/gtkwindow.c
tests/testgtk.c

index b1c285f0e89447fdccaa4bf14a342f63745929be..13011caa4e38924b2f06812ebdeb6cb7753b0706 100644 (file)
@@ -178,8 +178,7 @@ do_assistant (GtkWidget *do_widget)
 
       gtk_window_set_display (GTK_WINDOW (assistant),
                               gtk_widget_get_display (do_widget));
-      g_signal_connect (assistant, "destroy",
-                        G_CALLBACK (gtk_widget_destroyed), &assistant);
+      g_object_add_weak_pointer (G_OBJECT (assistant), (gpointer *)&assistant);
 
       create_page1 (assistant);
       create_page2 (assistant);
index 35714f23516a4a70d159fbb03a83a7997b46f867..709e1465e6d0f6ab550b2c13ea118b5fe2de67e8 100644 (file)
@@ -74,8 +74,7 @@ do_builder (GtkWidget *do_widget)
       window = GTK_WIDGET (gtk_builder_get_object (builder, "window1"));
       gtk_window_set_display (GTK_WINDOW (window),
                               gtk_widget_get_display (do_widget));
-      g_signal_connect (window, "destroy",
-                        G_CALLBACK (gtk_widget_destroyed), &window);
+      g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
       actions = (GActionGroup*)g_simple_action_group_new ();
       g_action_map_add_action_entries (G_ACTION_MAP (actions),
                                        win_entries, G_N_ELEMENTS (win_entries),
index 801baaa173dd2775ba9e357c6e6cb299ba035e3c..c00f95f0f6b833328cbf302747aaa6a534135732 100644 (file)
@@ -108,9 +108,7 @@ do_clipboard (GtkWidget *do_widget)
       gtk_window_set_display (GTK_WINDOW (window),
                               gtk_widget_get_display (do_widget));
       gtk_window_set_title (GTK_WINDOW (window), "Clipboard");
-
-      g_signal_connect (window, "destroy",
-                        G_CALLBACK (gtk_widget_destroyed), &window);
+      g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
 
       vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
       gtk_widget_set_margin_start (vbox, 8);
index 946267cc661df811c86c8afc939eec681c59faa6..318f8bdfd0cb080010e05531ef9ca7743825c5cb 100644 (file)
@@ -315,9 +315,7 @@ do_combobox (GtkWidget *do_widget)
     gtk_window_set_display (GTK_WINDOW (window),
                             gtk_widget_get_display (do_widget));
     gtk_window_set_title (GTK_WINDOW (window), "Combo Boxes");
-
-    g_signal_connect (window, "destroy",
-                      G_CALLBACK (gtk_widget_destroyed), &window);
+    g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
 
     vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 2);
     gtk_widget_set_margin_start (vbox, 10);
index 306d4b340ca59a414dcf8bc49a566aac8a8fc31d..23aa0c57d09d8e2bf1ee2f0fab3d69fe6a9e9e2e 100644 (file)
@@ -263,8 +263,7 @@ do_constraints (GtkWidget *do_widget)
      header = gtk_header_bar_new ();
      gtk_header_bar_set_show_title_buttons (GTK_HEADER_BAR (header), FALSE);
      gtk_window_set_titlebar (GTK_WINDOW (window), header);
-     g_signal_connect (window, "destroy",
-                       G_CALLBACK (gtk_widget_destroyed), &window);
+     g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
 
      box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 12);
      gtk_window_set_child (GTK_WINDOW (window), box);
index bd2f373e0f7a9ebf8f8699edfa74d4925e3e4752..e11d9a3f5902640a7edf1f9a853dc8511b15f686 100644 (file)
@@ -219,8 +219,7 @@ do_constraints2 (GtkWidget *do_widget)
      header = gtk_header_bar_new ();
      gtk_header_bar_set_show_title_buttons (GTK_HEADER_BAR (header), FALSE);
      gtk_window_set_titlebar (GTK_WINDOW (window), header);
-     g_signal_connect (window, "destroy",
-                       G_CALLBACK (gtk_widget_destroyed), &window);
+     g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
 
      box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 12);
      gtk_window_set_child (GTK_WINDOW (window), box);
index a534a905f7f78abc165fea9a4bc80077eae33268..a92153633b4c7fb53cbf21563daf799cf94aae87 100644 (file)
@@ -139,8 +139,7 @@ do_constraints3 (GtkWidget *do_widget)
      header = gtk_header_bar_new ();
      gtk_header_bar_set_show_title_buttons (GTK_HEADER_BAR (header), FALSE);
      gtk_window_set_titlebar (GTK_WINDOW (window), header);
-     g_signal_connect (window, "destroy",
-                       G_CALLBACK (gtk_widget_destroyed), &window);
+     g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
 
      box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 12);
      gtk_window_set_child (GTK_WINDOW (window), box);
index d28262def01bde9a9c0433fdc98b4285f0968005..18d50f9cafb45426c96cd2f1c42c5d33f4345930 100644 (file)
@@ -28,8 +28,7 @@ do_css_accordion (GtkWidget *do_widget)
       gtk_window_set_title (GTK_WINDOW (window), "CSS Accordion");
       gtk_window_set_transient_for (GTK_WINDOW (window), GTK_WINDOW (do_widget));
       gtk_window_set_default_size (GTK_WINDOW (window), 600, 300);
-      g_signal_connect (window, "destroy",
-                        G_CALLBACK (gtk_widget_destroyed), &window);
+      g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
 
       container = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
       gtk_widget_set_halign (container, GTK_ALIGN_CENTER);
index 2f46c4f38b1cddc590f5daa21fcebc07e62214cb..bba89fcddcdba00b4c63c03c5596921346f6bb55 100644 (file)
@@ -76,8 +76,7 @@ do_css_basics (GtkWidget *do_widget)
       gtk_window_set_title (GTK_WINDOW (window), "CSS Basics");
       gtk_window_set_transient_for (GTK_WINDOW (window), GTK_WINDOW (do_widget));
       gtk_window_set_default_size (GTK_WINDOW (window), 400, 300);
-      g_signal_connect (window, "destroy",
-                        G_CALLBACK (gtk_widget_destroyed), &window);
+      g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
 
       text = gtk_text_buffer_new (NULL);
       gtk_text_buffer_create_tag (text,
index 86fc0ecc91b941f33cc557887c03c6f1410e47d5..6f2b576f18385b0b5ca3b90b096ad6bbfe62d061 100644 (file)
@@ -125,7 +125,7 @@ do_css_blendmodes (GtkWidget *do_widget)
 
       window = WID ("window");
       gtk_window_set_transient_for (GTK_WINDOW (window), GTK_WINDOW (do_widget));
-      g_signal_connect (window, "destroy", G_CALLBACK (gtk_widget_destroyed), &window);
+      g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
 
       /* Setup the CSS provider for window */
       provider = GTK_STYLE_PROVIDER (gtk_css_provider_new ());
index 5e29060d85d860aca3566b9e4eeb32f4e1795885..d3436bf6c26d8066b9fe4f25e0c4613484067be4 100644 (file)
@@ -90,8 +90,7 @@ do_css_multiplebgs (GtkWidget *do_widget)
       gtk_window_set_title (GTK_WINDOW (window), "Multiple Backgrounds");
       gtk_window_set_transient_for (GTK_WINDOW (window), GTK_WINDOW (do_widget));
       gtk_window_set_default_size (GTK_WINDOW (window), 400, 300);
-      g_signal_connect (window, "destroy",
-                        G_CALLBACK (gtk_widget_destroyed), &window);
+      g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
 
       container = gtk_overlay_new ();
       gtk_window_set_child (GTK_WINDOW (window), container);
index 9d88ef76fa5871e020f95ad0bcca81d9b29d333d..a12142dd47da4aff0afdf3a05a69640cf2b219c1 100644 (file)
@@ -76,8 +76,7 @@ do_css_pixbufs (GtkWidget *do_widget)
       gtk_window_set_title (GTK_WINDOW (window), "Animated Backgrounds");
       gtk_window_set_transient_for (GTK_WINDOW (window), GTK_WINDOW (do_widget));
       gtk_window_set_default_size (GTK_WINDOW (window), 400, 300);
-      g_signal_connect (window, "destroy",
-                        G_CALLBACK (gtk_widget_destroyed), &window);
+      g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
 
       paned = gtk_paned_new (GTK_ORIENTATION_VERTICAL);
       gtk_window_set_child (GTK_WINDOW (window), paned);
index de21cfae292c458f61587c4021262a9d29a8c35e..db2f5ac521eed4ccda5be145514309e5d6c47801 100644 (file)
@@ -95,8 +95,7 @@ do_css_shadows (GtkWidget *do_widget)
       gtk_window_set_title (GTK_WINDOW (window), "Shadows");
       gtk_window_set_transient_for (GTK_WINDOW (window), GTK_WINDOW (do_widget));
       gtk_window_set_default_size (GTK_WINDOW (window), 400, 300);
-      g_signal_connect (window, "destroy",
-                        G_CALLBACK (gtk_widget_destroyed), &window);
+      g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
 
       paned = gtk_paned_new (GTK_ORIENTATION_VERTICAL);
       gtk_window_set_child (GTK_WINDOW (window), paned);
index 6b965b9d84f045dd3207f3e25bf53a9166ccb83c..ec42d4ee85b310af209c14fc16ca60b97b1caff7 100644 (file)
@@ -109,9 +109,7 @@ do_dialog (GtkWidget *do_widget)
       gtk_window_set_display (GTK_WINDOW (window),
                               gtk_widget_get_display (do_widget));
       gtk_window_set_title (GTK_WINDOW (window), "Dialogs and Message Boxes");
-
-      g_signal_connect (window, "destroy",
-                        G_CALLBACK (gtk_widget_destroyed), &window);
+      g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
 
       frame = gtk_frame_new ("Dialogs");
       gtk_widget_set_margin_start (frame, 8);
index 30bae48e17e71fc26d3ec535e287c34476ef5a19..fd26c9e77a9cd1738bf11308065d55fd8a5fba15 100644 (file)
@@ -438,9 +438,7 @@ do_dnd (GtkWidget *do_widget)
                               gtk_widget_get_display (do_widget));
       gtk_window_set_title (GTK_WINDOW (window), "Drag-and-Drop");
       gtk_window_set_default_size (GTK_WINDOW (window), 640, 480);
-
-      g_signal_connect (window, "destroy",
-                        G_CALLBACK (gtk_widget_destroyed), &window);
+      g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
 
       box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
       gtk_window_set_child (GTK_WINDOW (window), box);
index cb0ff0abfa2e93f73de9b82b9f7e3f9209f5c9db..7c28dc206031b85de9691a3ca075780ac9ad5a38 100644 (file)
@@ -352,8 +352,7 @@ do_editable_cells (GtkWidget *do_widget)
       gtk_window_set_display (GTK_WINDOW (window),
                               gtk_widget_get_display (do_widget));
       gtk_window_set_title (GTK_WINDOW (window), "Editable Cells");
-      g_signal_connect (window, "destroy",
-                        G_CALLBACK (gtk_widget_destroyed), &window);
+      g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
 
       vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 5);
       gtk_widget_set_margin_start (vbox, 5);
index d371afc45123f33810785eaba4ca2e6714105661..27ad6730d9e9c79719eabf4ed69995f4875ea3c7 100644 (file)
@@ -50,9 +50,7 @@ do_entry_completion (GtkWidget *do_widget)
                               gtk_widget_get_display (do_widget));
       gtk_window_set_title (GTK_WINDOW (window), "Entry Completion");
       gtk_window_set_resizable (GTK_WINDOW (window), FALSE);
-
-      g_signal_connect (window, "destroy",
-                        G_CALLBACK (gtk_widget_destroyed), &window);
+      g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
 
       vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 5);
       gtk_widget_set_margin_start (vbox, 5);
index 9d069aeafb7423302229bab0c5fc961673ec1431..cab5ac0291ae618a8031d52ad998e66d0a2c162f 100644 (file)
@@ -25,8 +25,7 @@ do_entry_undo (GtkWidget *do_widget)
                               gtk_widget_get_display (do_widget));
       gtk_window_set_title (GTK_WINDOW (window), "Entry Undo");
       gtk_window_set_resizable (GTK_WINDOW (window), FALSE);
-      g_signal_connect (window, "destroy",
-                        G_CALLBACK (gtk_widget_destroyed), &window);
+      g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
 
       vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 5);
       gtk_widget_set_margin_start (vbox, 5);
index 0cb87d6a4e1a3220285d06d43a18ef6e967c0bc2..6933cc57a24a7903013d009c2d9ac301ef3d93f8 100644 (file)
@@ -125,8 +125,7 @@ do_filtermodel (GtkWidget *do_widget)
       window = GTK_WIDGET (gtk_builder_get_object (builder, "window1"));
       gtk_window_set_display (GTK_WINDOW (window),
                               gtk_widget_get_display (do_widget));
-      g_signal_connect (window, "destroy",
-                        G_CALLBACK (gtk_widget_destroyed), &window);
+      g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
 
       store = (GtkListStore*)gtk_builder_get_object (builder, "liststore1");
 
index 60ec2b5c28069d4006d93e61d5d60a03e2ed9eb7..195746d91c19ce1c4859b314c318ab8ec591632c 100644 (file)
@@ -273,15 +273,13 @@ do_fishbowl (GtkWidget *do_widget)
 
       builder = gtk_builder_new_from_resource ("/fishbowl/fishbowl.ui");
       window = GTK_WIDGET (gtk_builder_get_object (builder, "window"));
-      g_signal_connect (window, "destroy",
-                        G_CALLBACK (gtk_widget_destroyed), &window);
+      g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
+
       bowl = GTK_WIDGET (gtk_builder_get_object (builder, "bowl"));
       selected_widget_type = -1;
       set_widget_type (GTK_FISHBOWL (bowl), 0);
       gtk_window_set_display (GTK_WINDOW (window),
                               gtk_widget_get_display (do_widget));
-      g_signal_connect (window, "destroy",
-                        G_CALLBACK (gtk_widget_destroyed), &window);
 
       gtk_widget_realize (window);
       g_object_unref (builder);
index fd87463b8986a3a2783b2f516893974947eee52d..3d8641c90efb3d2208b75f37f619587487494f98 100644 (file)
@@ -724,9 +724,7 @@ do_flowbox (GtkWidget *do_widget)
                               gtk_widget_get_display (do_widget));
       gtk_window_set_title (GTK_WINDOW (window), "Flow Box");
       gtk_window_set_default_size (GTK_WINDOW (window), 400, 600);
-
-      g_signal_connect (window, "destroy",
-                        G_CALLBACK (gtk_widget_destroyed), &window);
+      g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
 
       scrolled = gtk_scrolled_window_new (NULL, NULL);
       gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
index f009da03f11ab2976b0d46f126f63375c0738524..99cd083bac9b553fc5ed7bf3d3f4eb17fabed88f 100644 (file)
@@ -1333,8 +1333,7 @@ do_font_features (GtkWidget *do_widget)
 
       font_features_font_changed ();
 
-      g_signal_connect (window, "destroy",
-                        G_CALLBACK (gtk_widget_destroyed), &window);
+      g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
 
       g_object_unref (builder);
 
index bf455b39019d51fe8fcdf6eb77ba7ee2aee7af9b..e276d6209e8b74f59609242e2491e64258d8cce0 100644 (file)
@@ -85,7 +85,7 @@ do_gears (GtkWidget *do_widget)
       gtk_window_set_title (GTK_WINDOW (window), "Gears");
       gtk_window_set_resizable (GTK_WINDOW (window), TRUE);
       gtk_window_set_default_size (GTK_WINDOW (window), 640, 640);
-      g_signal_connect (window, "destroy", G_CALLBACK (gtk_widget_destroyed), &window);
+      g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
 
       overlay = gtk_overlay_new ();
       gtk_widget_set_margin_start (overlay, 12);
index f238da1666824529b1dc43613d7a3930c0a572cb..a001b1908b02f2331af6d1c8d790b9e395c1f182 100644 (file)
@@ -149,8 +149,7 @@ do_gestures (GtkWidget *do_widget)
       window = gtk_window_new ();
       gtk_window_set_default_size (GTK_WINDOW (window), 400, 400);
       gtk_window_set_title (GTK_WINDOW (window), "Gestures");
-      g_signal_connect (window, "destroy",
-                        G_CALLBACK (gtk_widget_destroyed), &window);
+      g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
 
       drawing_area = gtk_drawing_area_new ();
       gtk_window_set_child (GTK_WINDOW (window), drawing_area);
index e8a0ead1a9b63d4d49c8898e7351a9b7a2d35055..3a20d14ab3b66943a86d841ea5f2d7cb6c9795fc 100644 (file)
@@ -25,8 +25,8 @@ do_headerbar (GtkWidget *do_widget)
       window = gtk_window_new ();
       gtk_window_set_display (GTK_WINDOW (window),  gtk_widget_get_display (do_widget));
       gtk_window_set_title (GTK_WINDOW (window), "Welcome to Facebook - Log in, sign up or learn more");
-      g_signal_connect (window, "destroy",
-                        G_CALLBACK (gtk_widget_destroyed), &window);
+      g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
+
       gtk_window_set_default_size (GTK_WINDOW (window), 600, 400);
 
       header = gtk_header_bar_new ();
index 9191cabe492d63a037236b646a0f40bc46697bb7..e85da1b77673616a90cef8375c25e66a2fab0d54 100644 (file)
@@ -237,9 +237,7 @@ do_hypertext (GtkWidget *do_widget)
       gtk_window_set_display (GTK_WINDOW (window),
                               gtk_widget_get_display (do_widget));
       gtk_window_set_default_size (GTK_WINDOW (window), 450, 450);
-
-      g_signal_connect (window, "destroy",
-                        G_CALLBACK (gtk_widget_destroyed), &window);
+      g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
 
       view = gtk_text_view_new ();
       gtk_text_view_set_wrap_mode (GTK_TEXT_VIEW (view), GTK_WRAP_WORD);
index 2254aa0bef6d56f996b8b8ab4e1854491e770eb4..3ee06e6a21df82a92bcd76305e813b64300b6118 100644 (file)
@@ -209,12 +209,10 @@ do_iconscroll (GtkWidget *do_widget)
 
       builder = gtk_builder_new_from_resource ("/iconscroll/iconscroll.ui");
       window = GTK_WIDGET (gtk_builder_get_object (builder, "window"));
-      g_signal_connect (window, "destroy",
-                        G_CALLBACK (gtk_widget_destroyed), &window);
+      g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
       gtk_window_set_display (GTK_WINDOW (window),
                               gtk_widget_get_display (do_widget));
-      g_signal_connect (window, "destroy",
-                        G_CALLBACK (gtk_widget_destroyed), &window);
+
       scrolledwindow = GTK_WIDGET (gtk_builder_get_object (builder, "scrolledwindow"));
       gtk_widget_realize (window);
       hadjustment = GTK_ADJUSTMENT (gtk_builder_get_object (builder, "hadjustment"));
index 6e5c52d2a69f704709418450fe98ff3e674e98c6..bba6a75c97468177e6d56f1dca17c6bd2f849e9a 100644 (file)
@@ -111,9 +111,7 @@ do_iconview_edit (GtkWidget *do_widget)
       gtk_window_set_display (GTK_WINDOW (window),
                               gtk_widget_get_display (do_widget));
       gtk_window_set_title (GTK_WINDOW (window), "Editing and Drag-and-Drop");
-
-      g_signal_connect (window, "destroy",
-                        G_CALLBACK (gtk_widget_destroyed), &window);
+      g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
 
       store = create_store ();
       fill_store (store);
index b0efca8a1b99fa128eeb6b73a22e13682a4287bf..72cd574ed67b37ab3a76141e98e0812f205a2871 100644 (file)
@@ -335,9 +335,8 @@ do_images (GtkWidget *do_widget)
       gtk_window_set_display (GTK_WINDOW (window),
                               gtk_widget_get_display (do_widget));
       gtk_window_set_title (GTK_WINDOW (window), "Images");
+      g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
 
-      g_signal_connect (window, "destroy",
-                        G_CALLBACK (gtk_widget_destroyed), &window);
       g_signal_connect (window, "destroy",
                         G_CALLBACK (cleanup_callback), NULL);
 
index 92fc46b26c543c89ccddd5fef5c97c0648a4a61a..d3c1464ffac92070d53c835989534c3eac577f56 100644 (file)
@@ -58,8 +58,7 @@ do_infobar (GtkWidget *do_widget)
                               gtk_widget_get_display (do_widget));
       gtk_window_set_title (GTK_WINDOW (window), "Info Bars");
       gtk_window_set_resizable (GTK_WINDOW (window), FALSE);
-
-      g_signal_connect (window, "destroy", G_CALLBACK (gtk_widget_destroyed), &window);
+      g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
 
       vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
       gtk_widget_set_margin_start (vbox, 8);
index 219f09634685b59d833a7d5ea6ada880cb30fd7a..ae50f5a3891e0b33733d010b35bc30edcd344866 100644 (file)
@@ -59,8 +59,7 @@ do_links (GtkWidget *do_widget)
                               gtk_widget_get_display (do_widget));
       gtk_window_set_title (GTK_WINDOW (window), "Links");
       gtk_window_set_resizable (GTK_WINDOW (window), FALSE);
-      g_signal_connect (window, "destroy",
-                        G_CALLBACK (gtk_widget_destroyed), &window);
+      g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
 
       label = gtk_label_new ("Some <a href=\"http://en.wikipedia.org/wiki/Text\""
                              "title=\"plain text\">text</a> may be marked up "
index 941548318c8d8a5c828ca806845de6faf2fc0bb8..b96723d7eee2d389851f4719c211c271a2d60b8f 100644 (file)
@@ -257,9 +257,7 @@ do_list_store (GtkWidget *do_widget)
       gtk_window_set_display (GTK_WINDOW (window),
                               gtk_widget_get_display (do_widget));
       gtk_window_set_title (GTK_WINDOW (window), "List Store");
-
-      g_signal_connect (window, "destroy",
-                        G_CALLBACK (gtk_widget_destroyed), &window);
+      g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
 
       vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 8);
       gtk_widget_set_margin_start (vbox, 8);
index fe9c3e2fd393a20ae68b2859ef2b5a1a3d461665..92514082cda3d90311eee73a44a5c55eca6bae6d 100644 (file)
@@ -351,13 +351,8 @@ do_listbox (GtkWidget *do_widget)
       gtk_window_set_display (GTK_WINDOW (window),
                               gtk_widget_get_display (do_widget));
       gtk_window_set_title (GTK_WINDOW (window), "List Box");
-      gtk_window_set_default_size (GTK_WINDOW (window),
-                                   400, 600);
-
-      /* NULL window variable when window is closed */
-      g_signal_connect (window, "destroy",
-                        G_CALLBACK (gtk_widget_destroyed),
-                        &window);
+      gtk_window_set_default_size (GTK_WINDOW (window), 400, 600);
+      g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
 
       vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 12);
       gtk_window_set_child (GTK_WINDOW (window), vbox);
index 7b23ec925268aa7a622741090259288f841181ac..d21fba6ddfa3356f25dee9259a9dfd10c496c5f2 100644 (file)
@@ -58,8 +58,7 @@ do_markup (GtkWidget *do_widget)
       gtk_window_set_display (GTK_WINDOW (window),
                               gtk_widget_get_display (do_widget));
       gtk_window_set_default_size (GTK_WINDOW (window), 450, 450);
-      g_signal_connect (window, "destroy",
-                        G_CALLBACK (gtk_widget_destroyed), &window);
+      g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
 
       stack = gtk_stack_new ();
       gtk_widget_show (stack);
index a0299228b5b1a917543b85f47e9f3f01e3ec92df..01d321a298235de9a21e0a69c565aef25f6f9c13 100644 (file)
@@ -43,8 +43,7 @@ do_modelbutton (GtkWidget *do_widget)
       window = GTK_WIDGET (gtk_builder_get_object (builder, "window1"));
       gtk_window_set_display (GTK_WINDOW (window),
                               gtk_widget_get_display (do_widget));
-      g_signal_connect (window, "destroy",
-                        G_CALLBACK (gtk_widget_destroyed), &window);
+      g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
 
       actions = (GActionGroup*)g_simple_action_group_new ();
       g_action_map_add_action_entries (G_ACTION_MAP (actions),
index ae1391a96d6cbf72ef72ecf8dc1ff7e419846c9f..8b5a82b175f01e28e82ddfdb0f8718079dc6813a 100644 (file)
@@ -79,9 +79,7 @@ do_overlay (GtkWidget *do_widget)
       gtk_container_add (GTK_CONTAINER (vbox), entry);
 
       gtk_window_set_child (GTK_WINDOW (window), overlay);
-
-      g_signal_connect (window, "destroy",
-                        G_CALLBACK (gtk_widget_destroyed), &window);
+      g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
     }
 
   if (!gtk_widget_get_visible (window))
index 1cfc2d17988a387f3dad12236bfa33060c6b7997..5746f377d5e720929111810308708913bd2fedbb 100644 (file)
@@ -60,9 +60,7 @@ do_overlay2 (GtkWidget *do_widget)
       gtk_window_set_child (GTK_WINDOW (window), overlay);
       gtk_overlay_set_child (GTK_OVERLAY (overlay), sw);
       gtk_scrolled_window_set_child (GTK_SCROLLED_WINDOW (sw), text);
-
-      g_signal_connect (window, "destroy",
-                        G_CALLBACK (gtk_widget_destroyed), &window);
+      g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
 
       image = gtk_picture_new_for_resource ("/overlay2/decor1.png");
       gtk_overlay_add_overlay (GTK_OVERLAY (overlay), image);
index f169bae5c5ec9e61c11f27036e1e3620f29e7137..b440a1735a7050d93f88d7d77ca3a5f42ed840fd 100644 (file)
@@ -22,7 +22,7 @@ do_pagesetup (GtkWidget *do_widget)
   if (!window)
     {
       window = gtk_page_setup_unix_dialog_new ("Page Setup", GTK_WINDOW (do_widget));
-      g_signal_connect (window, "destroy", G_CALLBACK (gtk_widget_destroyed), &window);
+      g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
       g_signal_connect (window, "response", G_CALLBACK (done_cb), NULL);
     }
 
index a13750801edafb64756d1d418306de552055c1a5..e25efc50953bc7eff4a772db5fd00fa6950d3113 100644 (file)
@@ -405,10 +405,7 @@ do_paint (GtkWidget *toplevel)
       gtk_header_bar_pack_end (GTK_HEADER_BAR (headerbar), colorbutton);
       gtk_window_set_titlebar (GTK_WINDOW (window), headerbar);
       gtk_window_set_title (GTK_WINDOW (window), "Paint");
-
-      g_signal_connect (window, "destroy",
-                        G_CALLBACK (gtk_widget_destroyed), &window);
-
+      g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
     }
 
   if (!gtk_widget_get_visible (window))
index 6a5c9bc59edc281db348c63b724c68d9438b10dc..cca999a93bf16e09b52d1467bc0ee127695f6b5a 100644 (file)
@@ -152,9 +152,7 @@ do_panes (GtkWidget *do_widget)
       window = gtk_window_new ();
       gtk_window_set_display (GTK_WINDOW (window),
                               gtk_widget_get_display (do_widget));
-
-      g_signal_connect (window, "destroy",
-                        G_CALLBACK (gtk_widget_destroyed), &window);
+      g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
 
       gtk_window_set_title (GTK_WINDOW (window), "Paned Widgets");
 
index f8246dd4a4f16379da98788ef3044e4698c9669b..04867237c6f3aa3089d083474c42c7787ab437cb 100644 (file)
@@ -45,8 +45,7 @@ do_password_entry (GtkWidget *do_widget)
       gtk_window_set_title (GTK_WINDOW (window), "Choose a Password");
       gtk_window_set_resizable (GTK_WINDOW (window), FALSE);
       gtk_window_set_deletable (GTK_WINDOW (window), FALSE);
-      g_signal_connect (window, "destroy",
-                        G_CALLBACK (gtk_widget_destroyed), &window);
+      g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
 
       box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6);
       gtk_widget_set_margin_start (box, 18);
index 00fdca3d56c3437ac55f75849b0c9ec8808010e8..a408d444bd8f8b5dcc975e9465ac03f82fd80af3 100644 (file)
@@ -284,8 +284,7 @@ do_peg_solitaire (GtkWidget *do_widget)
       gtk_window_set_title (GTK_WINDOW (window), "Peg Solitaire");
       gtk_window_set_titlebar (GTK_WINDOW (window), header);
       gtk_window_set_default_size (GTK_WINDOW (window), 400, 300);
-      g_signal_connect (window, "destroy",
-                        G_CALLBACK (gtk_widget_destroyed), &window);
+      g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
 
       grid = gtk_grid_new ();
       gtk_widget_set_halign (grid, GTK_ALIGN_CENTER);
index 5f6b3f84971d90f455a5dcc42eb60e986f03f9cc..f114538ca312600494b2e53065ba99a51b0c9382 100644 (file)
@@ -18,9 +18,7 @@ do_pickers (GtkWidget *do_widget)
     gtk_window_set_display (GTK_WINDOW (window),
                             gtk_widget_get_display (do_widget));
     gtk_window_set_title (GTK_WINDOW (window), "Pickers");
-
-    g_signal_connect (window, "destroy",
-                      G_CALLBACK (gtk_widget_destroyed), &window);
+    g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
 
     table = gtk_grid_new ();
     gtk_widget_set_margin_start (table, 20);
index aece1dfb4a802115a3333b6b943a61e999ac4237..d6db9230e5e5f25b49ea0d295d2f56dfdcded40d 100644 (file)
@@ -179,9 +179,7 @@ do_pixbufs (GtkWidget *do_widget)
                               gtk_widget_get_display (do_widget));
       gtk_window_set_title (GTK_WINDOW (window), "Pixbufs");
       gtk_window_set_resizable (GTK_WINDOW (window), FALSE);
-
-      g_signal_connect (window, "destroy",
-                        G_CALLBACK (gtk_widget_destroyed), &window);
+      g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
 
       error = NULL;
       if (!load_pixbufs (&error))
index b86a5e69446876265b22308ae4c83e6afc6022e7..8a5a6c91e5a734a4110f186bf1ae28b88e04e728 100644 (file)
@@ -180,8 +180,7 @@ do_rotated_text (GtkWidget *do_widget)
                               gtk_widget_get_display (do_widget));
       gtk_window_set_title (GTK_WINDOW (window), "Rotated Text");
       gtk_window_set_default_size (GTK_WINDOW (window), 4 * RADIUS, 2 * RADIUS);
-      g_signal_connect (window, "destroy",
-                        G_CALLBACK (gtk_widget_destroyed), &window);
+      g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
 
       box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
       gtk_box_set_homogeneous (GTK_BOX (box), TRUE);
index 55304e890e07e377e6d2fe721949e51f728aadee..8c36e89f343cd60b10b07402da2cff93cd71e82a 100644 (file)
@@ -21,8 +21,7 @@ do_scale (GtkWidget *do_widget)
       window = GTK_WIDGET (gtk_builder_get_object (builder, "window1"));
       gtk_window_set_display (GTK_WINDOW (window),
                               gtk_widget_get_display (do_widget));
-      g_signal_connect (window, "destroy",
-                        G_CALLBACK (gtk_widget_destroyed), &window);
+      g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
 
       g_object_unref (builder);
     }
index 5e8cb6ac8b242b05343ef7979b5e81f6bdc7c1bf..73e65a37434d0af0435fde526ee6a1ae8af1fb20 100644 (file)
@@ -73,9 +73,7 @@ do_search_entry2 (GtkWidget *do_widget)
       gtk_window_set_transient_for (GTK_WINDOW (window), GTK_WINDOW (do_widget));
       gtk_window_set_resizable (GTK_WINDOW (window), TRUE);
       gtk_widget_set_size_request (window, 200, -1);
-
-      g_signal_connect (window, "destroy",
-                        G_CALLBACK (gtk_widget_destroyed), &window);
+      g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
 
       vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
       gtk_window_set_child (GTK_WINDOW (window), vbox);
index 509a7f55143c61ba3b9c6468ad0603f07bd74e80..114d8290b081671e9d8051a2bd9e394b285090f8 100644 (file)
@@ -56,9 +56,7 @@ do_shortcut_triggers (GtkWidget *do_widget)
       gtk_window_set_display (GTK_WINDOW (window),
                               gtk_widget_get_display (do_widget));
       gtk_window_set_title (GTK_WINDOW (window), "Shortcuts");
-
-      g_signal_connect (window, "destroy",
-                        G_CALLBACK (gtk_widget_destroyed), &window);
+      g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
 
       list = gtk_list_box_new ();
       gtk_widget_set_margin_top (list, 6);
index 8182035499162a43d4e43b581866287e496725ab..cfe53aa94e77f51b50cda9bafc2e404c67166f99 100644 (file)
@@ -89,8 +89,7 @@ do_shortcuts (GtkWidget *do_widget)
       window = GTK_WIDGET (gtk_builder_get_object (builder, "window1"));
       gtk_window_set_display (GTK_WINDOW (window),
                               gtk_widget_get_display (do_widget));
-      g_signal_connect (window, "destroy",
-                        G_CALLBACK (gtk_widget_destroyed), &window);
+      g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
 
       g_object_unref (builder);
     }
index 420861f225912ac0511e37314ab06f63b2ebc057..25bb7d9bc0c0ede4521dd043be8400557a173ffb 100644 (file)
@@ -43,9 +43,7 @@ do_sidebar (GtkWidget *do_widget)
       gtk_header_bar_set_show_title_buttons (GTK_HEADER_BAR(header), TRUE);
       gtk_window_set_titlebar (GTK_WINDOW(window), header);
       gtk_window_set_title (GTK_WINDOW(window), "Stack Sidebar");
-
-      g_signal_connect (window, "destroy",
-                        G_CALLBACK (gtk_widget_destroyed), &window);
+      g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
 
       box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
       sidebar = gtk_stack_sidebar_new ();
index 9d12dd35516f48b108c1e0cad1a5088ab5d0b33c..4958addee8eb0355eb7e244b64e6b3b17f46be85 100644 (file)
@@ -104,8 +104,7 @@ do_sizegroup (GtkWidget *do_widget)
       gtk_window_set_display (GTK_WINDOW (window),  gtk_widget_get_display (do_widget));
       gtk_window_set_title (GTK_WINDOW (window), "Size Groups");
       gtk_window_set_resizable (GTK_WINDOW (window), FALSE);
-      g_signal_connect (window, "destroy",
-                        G_CALLBACK (gtk_widget_destroyed), &window);
+      g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
 
       vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 5);
       gtk_widget_set_margin_start (vbox, 5);
index b564e200b5ff9889fbaa03187c2afeec46adf15f..b2739469562243041686f3bf17d7f52ae3b7a4aa 100644 (file)
@@ -460,8 +460,7 @@ do_sliding_puzzle (GtkWidget *do_widget)
       gtk_window_set_title (GTK_WINDOW (window), "Sliding Puzzle");
       gtk_window_set_titlebar (GTK_WINDOW (window), header);
       gtk_window_set_default_size (GTK_WINDOW (window), 400, 300);
-      g_signal_connect (window, "destroy",
-                        G_CALLBACK (gtk_widget_destroyed), &window);
+      g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
 
       frame = gtk_aspect_frame_new (0.5, 0.5, (float) gdk_paintable_get_intrinsic_aspect_ratio (puzzle), FALSE);
       gtk_window_set_child (GTK_WINDOW (window), frame);
index e50379a8db0995404444e2b5225f8e2634cad5f1..8d998bb5f907184d7ee3444e2f123938f23b3b5a 100644 (file)
@@ -196,8 +196,7 @@ do_spinbutton (GtkWidget *do_widget)
                             gtk_widget_get_display (do_widget));
     gtk_window_set_title (GTK_WINDOW (window), "Spin Buttons");
     gtk_window_set_resizable (GTK_WINDOW (window), FALSE);
-    g_signal_connect (window, "destroy",
-                      G_CALLBACK (gtk_widget_destroyed), &window);
+    g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
 
     adj = GTK_ADJUSTMENT (gtk_builder_get_object (builder, "basic_adjustment"));
     label = GTK_WIDGET (gtk_builder_get_object (builder, "basic_label"));
index 563438a04c97675334f393f35541dfc0eff376a4..160e6477032a0a9ddc2968c162bbaa8b71fa5787 100644 (file)
@@ -46,8 +46,7 @@ do_spinner (GtkWidget *do_widget)
 
     g_signal_connect (window, "response",
                       G_CALLBACK (gtk_widget_destroy), NULL);
-    g_signal_connect (window, "destroy",
-                      G_CALLBACK (gtk_widget_destroyed), &window);
+    g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
 
     content_area = gtk_dialog_get_content_area (GTK_DIALOG (window));
 
index 22969906f089f69443195a18c341061b3f687249..1796094c1f39efe5a3c3ed3b7d78f59ce6d70e86 100644 (file)
@@ -21,8 +21,7 @@ do_stack (GtkWidget *do_widget)
       window = GTK_WIDGET (gtk_builder_get_object (builder, "window1"));
       gtk_window_set_display (GTK_WINDOW (window),
                               gtk_widget_get_display (do_widget));
-      g_signal_connect (window, "destroy",
-                        G_CALLBACK (gtk_widget_destroyed), &window);
+      g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
 
       g_object_unref (builder);
     }
index 0a046a594e4e87bc4d7c03014cc9dcd9efbf8f30..b54a955a237de345b84c0ad8f4886a1e09b55461 100644 (file)
@@ -23,9 +23,7 @@ do_tabs (GtkWidget *do_widget)
       gtk_window_set_display (GTK_WINDOW (window),
                               gtk_widget_get_display (do_widget));
       gtk_window_set_default_size (GTK_WINDOW (window), 450, 450);
-
-      g_signal_connect (window, "destroy",
-                        G_CALLBACK (gtk_widget_destroyed), &window);
+      g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
 
       view = gtk_text_view_new ();
       gtk_text_view_set_wrap_mode (GTK_TEXT_VIEW (view), GTK_WRAP_WORD);
index 26795421bc97d297c55ca1f69d1b5a68c41a83a3..69c48c619a449b1ad551d12bfc207100fda1f86f 100644 (file)
@@ -72,8 +72,7 @@ do_tagged_entry (GtkWidget *do_widget)
       gtk_window_set_title (GTK_WINDOW (window), "A tagged entry");
       gtk_window_set_resizable (GTK_WINDOW (window), TRUE);
       gtk_window_set_deletable (GTK_WINDOW (window), FALSE);
-      g_signal_connect (window, "destroy",
-                        G_CALLBACK (gtk_widget_destroyed), &window);
+      g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
 
       box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6);
       gtk_widget_set_margin_start (box, 18);
index ff66ce29619f8cd2fdf85323716b8ba8daf7db44..b233f71e0a95bf03cddf21ac5345508f516c6665 100644 (file)
@@ -63,9 +63,7 @@ do_textmask (GtkWidget *do_widget)
       gtk_window_set_resizable (GTK_WINDOW (window), TRUE);
       gtk_widget_set_size_request (window, 400, 200);
       gtk_window_set_title (GTK_WINDOW (window), "Text Mask");
-
-      g_signal_connect (window, "destroy",
-                        G_CALLBACK (gtk_widget_destroyed), &window);
+      g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
 
       da = gtk_drawing_area_new ();
 
index 02df96c7a9a484d3eca0b9f68ee2c4c61d34c8cb..6d470fe7ee174a2eed6b7eda48f354d8cb694da3 100644 (file)
@@ -182,8 +182,7 @@ do_textscroll (GtkWidget *do_widget)
 
       window = gtk_window_new ();
       gtk_window_set_title (GTK_WINDOW (window), "Automatic Scrolling");
-      g_signal_connect (window, "destroy",
-                        G_CALLBACK (gtk_widget_destroyed), &window);
+      g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
       gtk_window_set_default_size (GTK_WINDOW (window), 600, 400);
 
       hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6);
index d7e35e0851f7b4600b7ecf14a30303bd314f7e80..e6b99c202ea7682df7719a158582494de40c57a5 100644 (file)
@@ -26,11 +26,8 @@ do_textundo (GtkWidget *do_widget)
       window = gtk_window_new ();
       gtk_window_set_display (GTK_WINDOW (window),
                               gtk_widget_get_display (do_widget));
-      gtk_window_set_default_size (GTK_WINDOW (window),
-                                   450, 450);
-
-      g_signal_connect (window, "destroy",
-                        G_CALLBACK (gtk_widget_destroyed), &window);
+      gtk_window_set_default_size (GTK_WINDOW (window), 450, 450);
+      g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
 
       gtk_window_set_title (GTK_WINDOW (window), "TextView Undo");
 
index 68e0b35c2028b34dc14a803451a368778c6b884e..d1c3c2fb7fd7629e6511a1cc5923afa77a55f843 100644 (file)
@@ -477,11 +477,8 @@ do_textview (GtkWidget *do_widget)
       window = gtk_window_new ();
       gtk_window_set_display (GTK_WINDOW (window),
                               gtk_widget_get_display (do_widget));
-      gtk_window_set_default_size (GTK_WINDOW (window),
-                                   450, 450);
-
-      g_signal_connect (window, "destroy",
-                        G_CALLBACK (gtk_widget_destroyed), &window);
+      gtk_window_set_default_size (GTK_WINDOW (window), 450, 450);
+      g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
 
       gtk_window_set_title (GTK_WINDOW (window), "Multiple Views");
 
index 88191aa157a2271a409cc9f91e83e6c36a4425b0..8f6eeca084451b25191af8457ccebcbba0e60174 100644 (file)
@@ -178,12 +178,10 @@ do_themes (GtkWidget *do_widget)
 
       builder = gtk_builder_new_from_resource ("/themes/themes.ui");
       window = GTK_WIDGET (gtk_builder_get_object (builder, "window"));
-      g_signal_connect (window, "destroy",
-                        G_CALLBACK (gtk_widget_destroyed), &window);
+      g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
       gtk_window_set_display (GTK_WINDOW (window),
                               gtk_widget_get_display (do_widget));
-      g_signal_connect (window, "destroy",
-                        G_CALLBACK (gtk_widget_destroyed), &window);
+
       header = GTK_WIDGET (gtk_builder_get_object (builder, "header"));
       gesture = gtk_gesture_click_new ();
       g_signal_connect (gesture, "pressed", G_CALLBACK (clicked), builder);
index db91d92c5cbb9bf95fe0d6368c525ce2b3e886e1..ed0aef2dd0b01204a7b9e0a5e17de08e5973123a 100644 (file)
@@ -25,8 +25,7 @@ do_theming_style_classes (GtkWidget *do_widget)
                               gtk_widget_get_display (do_widget));
       gtk_window_set_title (GTK_WINDOW (window), "Style Classes");
       gtk_window_set_resizable (GTK_WINDOW (window), FALSE);
-      g_signal_connect (window, "destroy",
-                        G_CALLBACK (gtk_widget_destroyed), &window);
+      g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
 
       builder = gtk_builder_new_from_resource ("/theming_style_classes/theming.ui");
 
index 6d2c010c105102b0533ef8a02311657ff0f57783..9f76e617847bf42f146c7c7213bdb7e5b65742b6 100644 (file)
@@ -22,9 +22,7 @@ do_transparent (GtkWidget *do_widget)
       gtk_window_set_display (GTK_WINDOW (window),
                               gtk_widget_get_display (do_widget));
       gtk_window_set_default_size (GTK_WINDOW (window), 450, 450);
-
-      g_signal_connect (window, "destroy",
-                        G_CALLBACK (gtk_widget_destroyed), &window);
+      g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
 
       gtk_window_set_title (GTK_WINDOW (window), "Transparency");
 
index f39b409718ad1ae608c2099e6057017bf33853f7..2a37c30a426df1683aea90e51e9eb9f4b3919db3 100644 (file)
@@ -394,8 +394,7 @@ do_tree_store (GtkWidget *do_widget)
       gtk_window_set_display (GTK_WINDOW (window),
                               gtk_widget_get_display (do_widget));
       gtk_window_set_title (GTK_WINDOW (window), "Tree Store");
-      g_signal_connect (window, "destroy",
-                        G_CALLBACK (gtk_widget_destroyed), &window);
+      g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
 
       vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 8);
       gtk_widget_set_margin_start (vbox, 8);
index 6a40204c2431e53a1d1bc6da3ae1a59ddbb6ca5c..bf35eb6446ab6eda7df4db2cc0462cb67b9d5c7a 100644 (file)
@@ -67,8 +67,7 @@ do_video_player (GtkWidget *do_widget)
       gtk_window_set_display (GTK_WINDOW (window),
                               gtk_widget_get_display (do_widget));
       gtk_window_set_title (GTK_WINDOW (window), "Video Player");
-      g_signal_connect (window, "destroy",
-                        G_CALLBACK (gtk_widget_destroyed), &window);
+      g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
 
       video = gtk_video_new ();
       gtk_window_set_child (GTK_WINDOW (window), video);
index e58bae6ac6122c604899672683c0c5f1bf7f75a7..bd7105b9bd89a7e29177acb4b954ceb35eda0bb5 100644 (file)
@@ -218,6 +218,13 @@ gtk_mount_operation_init (GtkMountOperation *operation)
     g_dbus_proxy_set_default_timeout (G_DBUS_PROXY (operation->priv->handler), G_MAXINT);
 }
 
+static void
+parent_destroyed (GtkWidget  *parent,
+                  gpointer  **pointer)
+{
+  *pointer = NULL;
+}
+
 static void
 gtk_mount_operation_finalize (GObject *object)
 {
@@ -230,7 +237,7 @@ gtk_mount_operation_finalize (GObject *object)
   if (priv->parent_window)
     {
       g_signal_handlers_disconnect_by_func (priv->parent_window,
-                                            gtk_widget_destroyed,
+                                            parent_destroyed,
                                             &priv->parent_window);
       g_object_unref (priv->parent_window);
     }
@@ -1835,7 +1842,7 @@ gtk_mount_operation_set_parent (GtkMountOperation *op,
   if (priv->parent_window)
     {
       g_signal_handlers_disconnect_by_func (priv->parent_window,
-                                            gtk_widget_destroyed,
+                                            parent_destroyed,
                                             &priv->parent_window);
       g_object_unref (priv->parent_window);
     }
@@ -1844,8 +1851,7 @@ gtk_mount_operation_set_parent (GtkMountOperation *op,
     {
       g_object_ref (priv->parent_window);
       g_signal_connect (priv->parent_window, "destroy",
-                        G_CALLBACK (gtk_widget_destroyed),
-                        &priv->parent_window);
+                        G_CALLBACK (parent_destroyed), &priv->parent_window);
     }
 
   if (priv->dialog)
index fc949183cc5797ec7acf5a4758c6f0c48dff9644..decfa1778bf4201dbc2f49416ea4af39ae7fdda3 100644 (file)
@@ -2410,41 +2410,20 @@ gtk_window_dispose (GObject *object)
 }
 
 static void
-parent_destroyed_callback (GtkWindow *parent, GtkWindow *child)
+gtk_window_transient_parent_destroyed (GtkWindow *parent,
+                                       GtkWindow *window)
 {
-  gtk_widget_destroy (GTK_WIDGET (child));
-}
-
-static void
-connect_parent_destroyed (GtkWindow *window)
-{
-  GtkWindowPrivate *priv = gtk_window_get_instance_private (window);
-
-  if (priv->transient_parent)
-    {
-      g_signal_connect (priv->transient_parent,
-                        "destroy",
-                        G_CALLBACK (parent_destroyed_callback),
-                        window);
-    }  
-}
-
-static void
-disconnect_parent_destroyed (GtkWindow *window)
-{
-  GtkWindowPrivate *priv = gtk_window_get_instance_private (window);
+  GtkWindowPrivate *priv = gtk_window_get_instance_private (GTK_WINDOW (window));
 
-  if (priv->transient_parent)
-    {
-      g_signal_handlers_disconnect_by_func (priv->transient_parent,
-                                           parent_destroyed_callback,
-                                           window);
-    }
+  if (priv->destroy_with_parent)
+    gtk_widget_destroy (GTK_WIDGET (window));
+  else
+    priv->transient_parent = NULL;
 }
 
 static void
 gtk_window_transient_parent_realized (GtkWidget *parent,
-                                     GtkWidget *window)
+                                      GtkWidget *window)
 {
   GtkWindowPrivate *priv = gtk_window_get_instance_private (GTK_WINDOW (window));
   GtkWindowPrivate *parent_priv = gtk_window_get_instance_private (GTK_WINDOW (parent));
@@ -2454,7 +2433,7 @@ gtk_window_transient_parent_realized (GtkWidget *parent,
 
 static void
 gtk_window_transient_parent_unrealized (GtkWidget *parent,
-                                       GtkWidget *window)
+                                        GtkWidget *window)
 {
   GtkWindowPrivate *priv = gtk_window_get_instance_private (GTK_WINDOW (window));
   if (_gtk_widget_get_realized (window))
@@ -2462,7 +2441,7 @@ gtk_window_transient_parent_unrealized (GtkWidget *parent,
 }
 
 static void
-gtk_window_transient_parent_display_changed (GtkWindow *parent,
+gtk_window_transient_parent_display_changed (GtkWindow  *parent,
                                              GParamSpec *pspec,
                                              GtkWindow  *window)
 {
@@ -2471,7 +2450,7 @@ gtk_window_transient_parent_display_changed (GtkWindow    *parent,
   gtk_window_set_display (window, parent_priv->display);
 }
 
-static void       
+static void
 gtk_window_unset_transient_for (GtkWindow *window)
 {
   GtkWindowPrivate *priv = gtk_window_get_instance_private (window);
@@ -2479,29 +2458,25 @@ gtk_window_unset_transient_for (GtkWindow *window)
   if (priv->transient_parent)
     {
       g_signal_handlers_disconnect_by_func (priv->transient_parent,
-                                           gtk_window_transient_parent_realized,
-                                           window);
+                                            gtk_window_transient_parent_realized,
+                                            window);
       g_signal_handlers_disconnect_by_func (priv->transient_parent,
-                                           gtk_window_transient_parent_unrealized,
-                                           window);
+                                            gtk_window_transient_parent_unrealized,
+                                            window);
       g_signal_handlers_disconnect_by_func (priv->transient_parent,
-                                           gtk_window_transient_parent_display_changed,
-                                           window);
+                                            gtk_window_transient_parent_display_changed,
+                                            window);
       g_signal_handlers_disconnect_by_func (priv->transient_parent,
-                                           gtk_widget_destroyed,
-                                           &priv->transient_parent);
-
-      if (priv->destroy_with_parent)
-        disconnect_parent_destroyed (window);
+                                            gtk_window_transient_parent_destroyed,
+                                            window);
 
       priv->transient_parent = NULL;
 
       if (priv->transient_parent_group)
-       {
-         priv->transient_parent_group = FALSE;
-         gtk_window_group_remove_window (priv->group,
-                                         window);
-       }
+        {
+          priv->transient_parent_group = FALSE;
+          gtk_window_group_remove_window (priv->group, window);
+        }
     }
 }
 
@@ -2524,8 +2499,8 @@ gtk_window_unset_transient_for (GtkWindow *window)
  * much as the window manager would have done on X.
  */
 void
-gtk_window_set_transient_for  (GtkWindow *window,
-                              GtkWindow *parent)
+gtk_window_set_transient_for (GtkWindow *window,
+                              GtkWindow *parent)
 {
   GtkWindowPrivate *priv = gtk_window_get_instance_private (window);
 
@@ -2538,9 +2513,8 @@ gtk_window_set_transient_for  (GtkWindow *window,
       if (_gtk_widget_get_realized (GTK_WIDGET (window)) &&
           _gtk_widget_get_realized (GTK_WIDGET (priv->transient_parent)) &&
           (!parent || !_gtk_widget_get_realized (GTK_WIDGET (parent))))
-       gtk_window_transient_parent_unrealized (GTK_WIDGET (priv->transient_parent),
-                                               GTK_WIDGET (window));
-
+        gtk_window_transient_parent_unrealized (GTK_WIDGET (priv->transient_parent),
+                                                GTK_WIDGET (window));
       gtk_window_unset_transient_for (window);
     }
 
@@ -2549,34 +2523,27 @@ gtk_window_set_transient_for  (GtkWindow *window,
   if (parent)
     {
       GtkWindowPrivate *parent_priv = gtk_window_get_instance_private (parent);
-      g_signal_connect (parent, "destroy",
-                       G_CALLBACK (gtk_widget_destroyed),
-                       &priv->transient_parent);
       g_signal_connect (parent, "realize",
-                       G_CALLBACK (gtk_window_transient_parent_realized),
-                       window);
+                        G_CALLBACK (gtk_window_transient_parent_realized), window);
       g_signal_connect (parent, "unrealize",
-                       G_CALLBACK (gtk_window_transient_parent_unrealized),
-                       window);
+                        G_CALLBACK (gtk_window_transient_parent_unrealized), window);
       g_signal_connect (parent, "notify::display",
-                       G_CALLBACK (gtk_window_transient_parent_display_changed),
-                       window);
+                        G_CALLBACK (gtk_window_transient_parent_display_changed), window);
+      g_signal_connect (parent, "destroy",
+                        G_CALLBACK (gtk_window_transient_parent_destroyed), window);
 
       gtk_window_set_display (window, parent_priv->display);
 
-      if (priv->destroy_with_parent)
-        connect_parent_destroyed (window);
-      
+
       if (_gtk_widget_get_realized (GTK_WIDGET (window)) &&
-         _gtk_widget_get_realized (GTK_WIDGET (parent)))
-       gtk_window_transient_parent_realized (GTK_WIDGET (parent),
-                                             GTK_WIDGET (window));
+          _gtk_widget_get_realized (GTK_WIDGET (parent)))
+        gtk_window_transient_parent_realized (GTK_WIDGET (parent), GTK_WIDGET (window));
 
       if (parent_priv->group)
-       {
-         gtk_window_group_add_window (parent_priv->group, window);
-         priv->transient_parent_group = TRUE;
-       }
+        {
+          gtk_window_group_add_window (parent_priv->group, window);
+          priv->transient_parent_group = TRUE;
+        }
     }
 
   update_window_actions (window);
@@ -2710,8 +2677,8 @@ gtk_window_set_application (GtkWindow      *window,
  * associated with, for example.
  **/
 void
-gtk_window_set_destroy_with_parent  (GtkWindow *window,
-                                     gboolean   setting)
+gtk_window_set_destroy_with_parent (GtkWindow *window,
+                                    gboolean   setting)
 {
   GtkWindowPrivate *priv = gtk_window_get_instance_private (window);
 
@@ -2720,15 +2687,6 @@ gtk_window_set_destroy_with_parent  (GtkWindow *window,
   if (priv->destroy_with_parent == (setting != FALSE))
     return;
 
-  if (priv->destroy_with_parent)
-    {
-      disconnect_parent_destroyed (window);
-    }
-  else
-    {
-      connect_parent_destroyed (window);
-    }
-
   priv->destroy_with_parent = setting;
 
   g_object_notify_by_pspec (G_OBJECT (window), window_props[PROP_DESTROY_WITH_PARENT]);
index 0d2b9b3a914779875d06c9960e2d62500c9bca1c..e081ff8582724b96fc350952a85b746d953f045e 100644 (file)
@@ -227,10 +227,7 @@ create_alpha_window (GtkWidget *widget)
       g_signal_connect (display, "notify::composited", G_CALLBACK (on_composited_changed), label);
 
       gtk_container_add (GTK_CONTAINER (vbox), build_alpha_widgets ());
-
-      g_signal_connect (window, "destroy",
-                       G_CALLBACK (gtk_widget_destroyed),
-                       &window);
+      g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
 
       g_signal_connect (window, "response",
                         G_CALLBACK (gtk_widget_destroy),
@@ -274,11 +271,8 @@ create_buttons (GtkWidget *widget)
     {
       window = gtk_window_new ();
       gtk_window_set_display (GTK_WINDOW (window),
-                             gtk_widget_get_display (widget));
-
-      g_signal_connect (window, "destroy",
-                       G_CALLBACK (gtk_widget_destroyed),
-                       &window);
+                              gtk_widget_get_display (widget));
+      g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
 
       gtk_window_set_title (GTK_WINDOW (window), "GtkButton");
 
@@ -357,11 +351,8 @@ create_toggle_buttons (GtkWidget *widget)
     {
       window = gtk_window_new ();
       gtk_window_set_display (GTK_WINDOW (window),
-                             gtk_widget_get_display (widget));
-
-      g_signal_connect (window, "destroy",
-                       G_CALLBACK (gtk_widget_destroyed),
-                       &window);
+                              gtk_widget_get_display (widget));
+      g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
 
       gtk_window_set_title (GTK_WINDOW (window), "GtkToggleButton");
 
@@ -476,11 +467,8 @@ create_check_buttons (GtkWidget *widget)
                                             NULL);
 
       gtk_window_set_display (GTK_WINDOW (window), 
-                             gtk_widget_get_display (widget));
-
-      g_signal_connect (window, "destroy",
-                       G_CALLBACK (gtk_widget_destroyed),
-                       &window);
+                              gtk_widget_get_display (widget));
+      g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
       g_signal_connect (window, "response",
                         G_CALLBACK (gtk_widget_destroy),
                         NULL);
@@ -545,11 +533,8 @@ create_radio_buttons (GtkWidget *widget)
                                             NULL);
 
       gtk_window_set_display (GTK_WINDOW (window),
-                             gtk_widget_get_display (widget));
-
-      g_signal_connect (window, "destroy",
-                       G_CALLBACK (gtk_widget_destroyed),
-                       &window);
+                              gtk_widget_get_display (widget));
+      g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
       g_signal_connect (window, "response",
                         G_CALLBACK (gtk_widget_destroy),
                         NULL);
@@ -734,11 +719,8 @@ create_statusbar (GtkWidget *widget)
     {
       window = gtk_window_new ();
       gtk_window_set_display (GTK_WINDOW (window),
-                             gtk_widget_get_display (widget));
-
-      g_signal_connect (window, "destroy",
-                       G_CALLBACK (gtk_widget_destroyed),
-                       &window);
+                              gtk_widget_get_display (widget));
+      g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
 
       gtk_window_set_title (GTK_WINDOW (window), "statusbar");
 
@@ -944,11 +926,8 @@ static void create_labels (GtkWidget *widget)
       window = gtk_window_new ();
 
       gtk_window_set_display (GTK_WINDOW (window),
-                             gtk_widget_get_display (widget));
-
-      g_signal_connect (window, "destroy",
-                       G_CALLBACK (gtk_widget_destroyed),
-                       &window);
+                              gtk_widget_get_display (widget));
+      g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
 
       gtk_window_set_title (GTK_WINDOW (window), "Label");
 
@@ -1187,8 +1166,7 @@ create_rotated_text (GtkWidget *widget)
 
       g_signal_connect (window, "response",
                        G_CALLBACK (gtk_widget_destroy), NULL);
-      g_signal_connect (window, "destroy",
-                       G_CALLBACK (gtk_widget_destroyed), &window);
+      g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
 
       content_area = gtk_dialog_get_content_area (GTK_DIALOG (window));
 
@@ -1239,11 +1217,8 @@ create_pixbuf (GtkWidget *widget)
       window = gtk_window_new ();
 
       gtk_window_set_display (GTK_WINDOW (window),
-                             gtk_widget_get_display (widget));
-
-      g_signal_connect (window, "destroy",
-                        G_CALLBACK (gtk_widget_destroyed),
-                        &window);
+                              gtk_widget_get_display (widget));
+      g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
 
       gtk_window_set_title (GTK_WINDOW (window), "GtkPixmap");
       gtk_widget_realize(window);
@@ -1426,9 +1401,7 @@ create_image (GtkWidget *widget)
        */
       gtk_window_set_resizable (GTK_WINDOW (window), TRUE);
 
-      g_signal_connect (window, "destroy",
-                       G_CALLBACK (gtk_widget_destroyed),
-                       &window);
+      g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
 
       vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 5);
 
@@ -1549,7 +1522,7 @@ create_listbox (GtkWidget *widget)
       gtk_window_set_hide_on_close (GTK_WINDOW (window), TRUE);
       gtk_window_set_display (GTK_WINDOW (window), display);
 
-      g_signal_connect (window, "destroy", G_CALLBACK (gtk_widget_destroyed), &window);
+      g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
 
       gtk_window_set_title (GTK_WINDOW (window), "listbox");
 
@@ -1649,7 +1622,6 @@ static void
 create_key_lookup (GtkWidget *widget)
 {
   static GtkWidget *window = NULL;
-  gpointer window_ptr;
 
   if (!window)
     {
@@ -1702,8 +1674,7 @@ create_key_lookup (GtkWidget *widget)
       button = accel_button_new ("Button 14", "<Meta>a");
       gtk_container_add (GTK_CONTAINER (box), button);
 
-      window_ptr = &window;
-      g_object_add_weak_pointer (G_OBJECT (window), window_ptr);
+      g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
       g_signal_connect (window, "response", G_CALLBACK (gtk_widget_destroy), NULL);
 
       gtk_widget_show (window);
@@ -1857,10 +1828,7 @@ make_message_dialog (GdkDisplay     *display,
                            G_CALLBACK (gtk_widget_destroy),
                            *dialog);
   
-  g_signal_connect (*dialog,
-                    "destroy",
-                    G_CALLBACK (gtk_widget_destroyed),
-                    dialog);
+  g_object_add_weak_pointer (G_OBJECT (*dialog), (gpointer)dialog);
 
   gtk_dialog_set_default_response (GTK_DIALOG (*dialog), default_response);
 
@@ -1982,11 +1950,8 @@ create_scrolled_windows (GtkWidget *widget)
       window = gtk_dialog_new ();
 
       gtk_window_set_display (GTK_WINDOW (window),
-                             gtk_widget_get_display (widget));
-
-      g_signal_connect (window, "destroy",
-                       G_CALLBACK (gtk_widget_destroyed),
-                       &window);
+                              gtk_widget_get_display (widget));
+      g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
 
       content_area = gtk_dialog_get_content_area (GTK_DIALOG (window));
 
@@ -2132,11 +2097,8 @@ create_entry (GtkWidget *widget)
     {
       window = gtk_window_new ();
       gtk_window_set_display (GTK_WINDOW (window),
-                             gtk_widget_get_display (widget));
-
-      g_signal_connect (window, "destroy",
-                       G_CALLBACK (gtk_widget_destroyed),
-                       &window);
+                              gtk_widget_get_display (widget));
+      g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
 
       gtk_window_set_title (GTK_WINDOW (window), "entry");
 
@@ -2238,11 +2200,8 @@ create_expander (GtkWidget *widget)
     {
       window = gtk_window_new ();
       gtk_window_set_display (GTK_WINDOW (window),
-                             gtk_widget_get_display (widget));
-
-      g_signal_connect (window, "destroy",
-                       G_CALLBACK (gtk_widget_destroyed),
-                       &window);
+                              gtk_widget_get_display (widget));
+      g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
 
       gtk_window_set_title (GTK_WINDOW (window), "expander");
 
@@ -2419,21 +2378,15 @@ create_size_groups (GtkWidget *widget)
   if (!window1)
     {
       window1 = create_size_group_window (gtk_widget_get_display (widget),
-                                         master_size_group);
-
-      g_signal_connect (window1, "destroy",
-                       G_CALLBACK (gtk_widget_destroyed),
-                       &window1);
+                                          master_size_group);
+      g_object_add_weak_pointer (G_OBJECT (window1), (gpointer *)&window1);
     }
 
   if (!window2)
     {
       window2 = create_size_group_window (gtk_widget_get_display (widget),
-                                         master_size_group);
-
-      g_signal_connect (window2, "destroy",
-                       G_CALLBACK (gtk_widget_destroyed),
-                       &window2);
+                                          master_size_group);
+      g_object_add_weak_pointer (G_OBJECT (window2), (gpointer *)&window2);
     }
 
   if (gtk_widget_get_visible (window1) && gtk_widget_get_visible (window2))
@@ -2639,11 +2592,8 @@ create_spins (GtkWidget *widget)
     {
       window = gtk_window_new ();
       gtk_window_set_display (GTK_WINDOW (window),
-                             gtk_widget_get_display (widget));
-
-      g_signal_connect (window, "destroy",
-                       G_CALLBACK (gtk_widget_destroyed),
-                       &window);
+                              gtk_widget_get_display (widget));
+      g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
 
       gtk_window_set_title (GTK_WINDOW (window), "GtkSpinButton");
 
@@ -3089,11 +3039,8 @@ create_cursors (GtkWidget *widget)
     {
       window = gtk_window_new ();
       gtk_window_set_display (GTK_WINDOW (window),
-                             gtk_widget_get_display (widget));
-
-      g_signal_connect (window, "destroy",
-                       G_CALLBACK (gtk_widget_destroyed),
-                       &window);
+                              gtk_widget_get_display (widget));
+      g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
 
       gtk_window_set_title (GTK_WINDOW (window), "Cursors");
 
@@ -3227,14 +3174,11 @@ create_color_selection (GtkWidget *widget)
       GtkWidget *picker;
       GtkWidget *hbox;
       GtkWidget *label;
-      
+
       window = gtk_window_new ();
-      gtk_window_set_display (GTK_WINDOW (window), 
-                             gtk_widget_get_display (widget));
-                            
-      g_signal_connect (window, "destroy",
-                       G_CALLBACK (gtk_widget_destroyed),
-                        &window);
+      gtk_window_set_display (GTK_WINDOW (window),
+                              gtk_widget_get_display (widget));
+      g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
 
       gtk_window_set_title (GTK_WINDOW (window), "GtkColorButton");
 
@@ -3350,11 +3294,8 @@ create_flipping (GtkWidget *widget)
       window = gtk_dialog_new ();
 
       gtk_window_set_display (GTK_WINDOW (window),
-                             gtk_widget_get_display (widget));
-
-      g_signal_connect (window, "destroy",
-                       G_CALLBACK (gtk_widget_destroyed),
-                       &window);
+                              gtk_widget_get_display (widget));
+      g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
 
       content_area = gtk_dialog_get_content_area (GTK_DIALOG (window));
 
@@ -3411,11 +3352,8 @@ create_font_selection (GtkWidget *widget)
       
       window = gtk_window_new ();
       gtk_window_set_display (GTK_WINDOW (window),
-                             gtk_widget_get_display (widget));
-
-      g_signal_connect (window, "destroy",
-                       G_CALLBACK (gtk_widget_destroyed),
-                       &window);
+                              gtk_widget_get_display (widget));
+      g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
 
       gtk_window_set_title (GTK_WINDOW (window), "GtkFontButton");
 
@@ -3496,12 +3434,8 @@ create_dialog (GtkWidget *widget)
       
       dialog_window = gtk_dialog_new ();
       gtk_window_set_display (GTK_WINDOW (dialog_window),
-                             gtk_widget_get_display (widget));
-
-      g_signal_connect (dialog_window, "destroy",
-                       G_CALLBACK (gtk_widget_destroyed),
-                       &dialog_window);
-
+                              gtk_widget_get_display (widget));
+      g_object_add_weak_pointer (G_OBJECT (dialog_window), (gpointer *)&dialog_window);
 
       gtk_window_set_title (GTK_WINDOW (dialog_window), "GtkDialog");
 
@@ -3683,11 +3617,8 @@ create_range_controls (GtkWidget *widget)
       window = gtk_window_new ();
 
       gtk_window_set_display (GTK_WINDOW (window),
-                             gtk_widget_get_display (widget));
-
-      g_signal_connect (window, "destroy",
-                       G_CALLBACK (gtk_widget_destroyed),
-                       &window);
+                              gtk_widget_get_display (widget));
+      g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
 
       gtk_window_set_title (GTK_WINDOW (window), "range controls");
 
@@ -4046,11 +3977,8 @@ create_notebook (GtkWidget *widget)
     {
       window = gtk_window_new ();
       gtk_window_set_display (GTK_WINDOW (window),
-                             gtk_widget_get_display (widget));
-
-      g_signal_connect (window, "destroy",
-                       G_CALLBACK (gtk_widget_destroyed),
-                       &window);
+                              gtk_widget_get_display (widget));
+      g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
 
       gtk_window_set_title (GTK_WINDOW (window), "notebook");
 
@@ -4246,11 +4174,8 @@ create_panes (GtkWidget *widget)
       window = gtk_window_new ();
 
       gtk_window_set_display (GTK_WINDOW (window),
-                             gtk_widget_get_display (widget));
-      
-      g_signal_connect (window, "destroy",
-                       G_CALLBACK (gtk_widget_destroyed),
-                       &window);
+                              gtk_widget_get_display (widget));
+      g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
 
       gtk_window_set_title (GTK_WINDOW (window), "Panes");
 
@@ -4614,33 +4539,25 @@ create_paned_keyboard_navigation (GtkWidget *widget)
   if (!window1)
     {
       window1 = paned_keyboard_window1 (widget);
-      g_signal_connect (window1, "destroy",
-                       G_CALLBACK (gtk_widget_destroyed),
-                       &window1);
+      g_object_add_weak_pointer (G_OBJECT (window1), (gpointer *)&window1);
     }
 
   if (!window2)
     {
       window2 = paned_keyboard_window2 (widget);
-      g_signal_connect (window2, "destroy",
-                       G_CALLBACK (gtk_widget_destroyed),
-                       &window2);
+      g_object_add_weak_pointer (G_OBJECT (window2), (gpointer *)&window2);
     }
 
   if (!window3)
     {
       window3 = paned_keyboard_window3 (widget);
-      g_signal_connect (window3, "destroy",
-                       G_CALLBACK (gtk_widget_destroyed),
-                       &window3);
+      g_object_add_weak_pointer (G_OBJECT (window3), (gpointer *)&window3);
     }
 
   if (!window4)
     {
       window4 = paned_keyboard_window4 (widget);
-      g_signal_connect (window4, "destroy",
-                       G_CALLBACK (gtk_widget_destroyed),
-                       &window4);
+      g_object_add_weak_pointer (G_OBJECT (window4), (gpointer *)&window4);
     }
 
   if (gtk_widget_get_visible (window1))
@@ -4686,11 +4603,8 @@ create_wmhints (GtkWidget *widget)
       window = gtk_window_new ();
 
       gtk_window_set_display (GTK_WINDOW (window),
-                             gtk_widget_get_display (widget));
-      
-      g_signal_connect (window, "destroy",
-                       G_CALLBACK (gtk_widget_destroyed),
-                       &window);
+                              gtk_widget_get_display (widget));
+      g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
 
       gtk_window_set_title (GTK_WINDOW (window), "WM Hints");
 
@@ -4921,11 +4835,8 @@ create_surface_states (GtkWidget *widget)
     {
       window = gtk_window_new ();
       gtk_window_set_display (GTK_WINDOW (window),
-                             gtk_widget_get_display (widget));
-
-      g_signal_connect (window, "destroy",
-                       G_CALLBACK (gtk_widget_destroyed),
-                       &window);
+                              gtk_widget_get_display (widget));
+      g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
 
       gtk_window_set_title (GTK_WINDOW (window), "Surface states");
       
@@ -5193,17 +5104,12 @@ create_window_sizing (GtkWidget *widget)
       gtk_label_set_markup (GTK_LABEL (label), "<span foreground=\"purple\"><big>Window being resized</big></span>\nBlah blah blah blah\nblah blah blah\nblah blah blah blah blah");
       gtk_window_set_child (GTK_WINDOW (target_window), label);
       gtk_widget_show (target_window);
-      
-      g_signal_connect (target_window, "destroy",
-                       G_CALLBACK (gtk_widget_destroyed),
-                       &target_window);
+
+      g_object_add_weak_pointer (G_OBJECT (target_window), (gpointer *)&target_window);
 
       window = window_controls (target_window);
-      
-      g_signal_connect (window, "destroy",
-                       G_CALLBACK (gtk_widget_destroyed),
-                       &window);
-      
+      g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
+
       gtk_window_set_title (GTK_WINDOW (target_window), "Window to size");
     }
 
@@ -5947,9 +5853,7 @@ create_native_dialogs (GtkWidget *widget)
       g_signal_connect (native, "notify::visible",
                         G_CALLBACK (native_visible_notify_hide), hide_button);
 
-      g_signal_connect (window, "destroy",
-                        G_CALLBACK (gtk_widget_destroyed),
-                        &window);
+      g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
     }
 
   if (!gtk_widget_get_visible (window))